home *** CD-ROM | disk | FTP | other *** search
- '* Setup script for ClarisWorks Application Installation
- '**************************************************************************
-
- '$DEFINE DEBUG ''Define for script development/debugging
-
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
-
- ''Dialog ID's
- CONST WELCOME = 100
- CONST ASKQUIT = 200
- CONST DESTPATH = 300
- CONST CLARISPATH = 350
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST OPTIONS = 800
- CONST APPHELP = 900
- CONST CUSTOM = 1000
- CONST GETNAMEORGNUM = 1100
- CONST TOOBIG = 6300
- CONST BADPATH = 6400
-
- ''Bitmap ID
- CONST LOGO = 1
-
- GLOBAL DEST$ ''Default destination directory.
- GLOBAL CDEST$ ''Destination directory.
- GLOBAL CHECKIN$ ''Custom install checkboxes initially
- GLOBAL CHECKOUT$ ''Custom install checkboxes on termination
- GLOBAL CNAME$ ''Customer name
- GLOBAL CORG$ ''Customer organization
- GLOBAL CSERNUM$ ''Customer serial number
- GLOBAL PERS$ ''Personalization string
- GLOBAL CSTM% '' custom install flag
- GLOBAL CEXISTS% '' claris directory already exists
- GLOBAL HOWMUCH& '' space needed in works dir
- GLOBAL HOWMUCHC& '' space needed in claris dir
-
- DECLARE SUB Install
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION FixSlash (szName$) AS STRING
-
-
- INIT:
- CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
- HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure
-
- SetBitmap CUIDLL$, LOGO
- SetTitle "ClarisWorks Setup"
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
- END IF
- ReadInfFile szInf$
-
- '' initialize everything that needs it just once
-
- CSTM% = 0
- CNAME$ = ""
- CORG$ = ""
- CSERNUM$ = "See registration card"
- DEST$ = "C:\CLWORKS"
-
- WindowsDir$ = GetWindowsDir()
- ini$ = MakePath(WindowsDir$, "CLARIS.INI")
- CDEST$ = GetIniKeyString( ini$, "Claris", "Claris Directory" )
- IF CDEST$ = "" THEN
- CEXISTS% = 0
- CDEST$ = MakePath(WindowsDir$, "CLARIS")
- ELSE
- CEXISTS% = 1
- END IF
-
- CHECKIN$ = "CheckItemsIn"
- CHECKOUT$ = "CheckItemsOut"
- FOR i% = 1 TO 6 STEP 1
- AddListItem CHECKIN$, "OFF"
- NEXT i%
- FOR i% = 1 TO 6 STEP 1
- AddListItem CHECKOUT$, "OFF"
- NEXT i%
-
-
- i% = SetSizeCheckMode(scmOnIgnore) '' could use scmOff; def = scmOnFatal
- WinDrive$ = MID$(GetWindowsDir, 1, 1)
- IF IsDriveValid(WinDrive$) = 0 THEN
- i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
- GOTO QUIT
- END IF
-
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
- IF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO WELCOME
- ELSE
- UIPop 1
- IF sz$ = "CONTINUE" THEN
- '' this is a full install, so set all checkboxes on
- FOR i% = 1 TO 6 STEP 1
- ReplaceListItem CHECKOUT$, i%, "ON"
- NEXT i%
- GOTO GETNAME
- END IF
- END IF
-
-
- CUSTOM:
- '' always set checkin to what is in checkout, as this may be from a BACK
- FOR i% = 1 TO 6 STEP 1
- sz$ = GetListItem(CHECKOUT$, i%)
- ReplaceListItem CHECKIN$, i%, sz$
- NEXT i%
-
- sz$ = UIStartDlg(CUIDLL$, CUSTOM, "FCheckDlgProc", APPHELP, HELPPROC$)
-
- IF sz$ = "CONTINUE" THEN
- '' CHECKOUT$ does not need to be Got here, it is already updated
- UIPop 1
- CSTM% = 1
- GOTO GETNAME
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO CUSTOM
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO WELCOME
- ELSE
- GOSUB ASKQUIT
- GOTO CUSTOM
- END IF
-
-
- GETNAME:
- SetSymbolValue "NameIn", CNAME$
- SetSymbolValue "OrgIn", CORG$
- SetSymbolValue "NumIn", CSERNUM$
-
- GETNAME1:
- sz$ = UIStartDlg(CUIDLL$, GETNAMEORGNUM, "FNameOrgNumDlgProc", APPHELP, HELPPROC$)
-
- CNAME$ = GetSymbolValue("NameOut")
- CORG$ = GetSymbolValue("OrgOut")
- CSERNUM$ = GetSymbolValue("NumOut")
-
- IF sz$ = "CONTINUE" THEN
- IF CNAME$ = "" THEN
- GOTO GETNAME
- END IF
- UIPop 1
- GOTO GETPATH
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETNAME1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- IF CSTM% = 1 THEN
- GOTO CUSTOM
- ELSE
- GOTO WELCOME
- END IF
- ELSE
- GOSUB ASKQUIT
- GOTO GETNAME
- END IF
-
-
- GETPATH:
- '' first, calculate how much space is needed for works directory
- HOWMUCH& = 1400000 '' base amount
- IF GetListItem(CHECKOUT$, 1) = "ON" THEN '' samples and tutorial
- HOWMUCH& = HOWMUCH& + 300000
- END IF
- IF GetListItem(CHECKOUT$, 2) = "ON" THEN '' help
- HOWMUCH& = HOWMUCH& + 400000
- END IF
-
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
- DEST$ = GetSymbolValue("EditTextOut")
-
- IF sz$ = "CONTINUE" THEN
- DEST$ = FixSlash(DEST$)
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- END IF
- UIPop 1
- drive1$ = MID$(DEST$, 1, 1)
- free& = GetFreeSpaceForDrive(drive1$)
- IF free& < HOWMUCH& THEN
- GOSUB TOOBIG
- GOTO GETPATHL1
- END IF
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETPATHL1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO GETNAME
- ELSE
- GOSUB ASKQUIT
- GOTO GETPATH
- END IF
-
-
- GETCPATH:
- '' first, calculate how much space is needed for claris directory
- HOWMUCHC& = 1120000 '' base amount
- IF GetListItem(CHECKOUT$, 3) = "ON" THEN '' word processing
- HOWMUCHC& = HOWMUCHC& + 320000
- END IF
- IF GetListItem(CHECKOUT$, 4) = "ON" THEN '' excel
- HOWMUCHC& = HOWMUCHC& + 110000
- END IF
- IF GetListItem(CHECKOUT$, 5) = "ON" THEN '' lotus
- HOWMUCHC& = HOWMUCHC& + 120000
- END IF
- IF GetListItem(CHECKOUT$, 6) = "ON" THEN '' dbf
- HOWMUCHC& = HOWMUCHC& + 60000
- END IF
-
- IF CSTM% = 0 THEN
- '' on full install, don't put up this dialog, but do check space
- GOTO ISSPACE
- END IF
-
- IF CEXISTS% = 1 THEN
- '' if claris dir exists, don't put up this dialog, but do check space
- GOTO ISSPACE
- END IF
- SetSymbolValue "EditTextIn", CDEST$
- SetSymbolValue "EditFocus", "END"
-
- GETCPATHL1:
- sz$ = UIStartDlg(CUIDLL$, CLARISPATH, "FEditDlgProc", APPHELP, HELPPROC$)
-
- CDEST$ = GetSymbolValue("EditTextOut")
-
- IF sz$ = "CONTINUE" THEN
- CDEST$ = FixSlash(CDEST$)
- IF IsDirWritable(CDEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETCPATHL1
- END IF
- UIPop 1
- ISSPACE:
- drive2$ = MID$(CDEST$, 1, 1)
- free& = GetFreeSpaceForDrive(drive2$)
- IF drive2$ = drive1$ THEN
- free& = free& - HOWMUCH&
- END IF
- IF free& < HOWMUCHC& THEN
- GOSUB TOOBIG
- GOTO GETCPATHL1
- END IF
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETCPATHL1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO GETPATH
- ELSE
- GOSUB ASKQUIT
- GOTO GETCPATH
- END IF
-
-
- DOIT:
- Install
-
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
- QUITL1:
- sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
- i% = ExitExecRestart
- END
-
- ERRQUIT:
- i% = DoMsgBox("Setup sources were corrupted, call Claris Technical Support", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- END
-
-
-
- TOOBIG:
- sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO TOOBIG
- END IF
- UIPop 1
- RETURN
-
-
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
-
-
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
-
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
-
- '**
- '** Purpose:
- '** Builds the copy list and performs all installation operations.
- '** Arguments:
- '** none.
- '** Returns:
- '** none.
- '*************************************************************************
- SUB Install STATIC
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- CreateDir DEST$, cmoNone
- SampleDir$ = MakePath(DEST$, "SAMPLES\")
- TutorialDir$ = MakePath(DEST$, "TUTORIAL\")
- WindowsDir$ = GetWindowsDir()
- SysDir$ = GetWindowsSysDir()
- ClarisDir$ = CDEST$
- CreateDir ClarisDir$, cmoNone
-
- AddSectionFilesToCopyList "APPLICATION", SrcDir$, DEST$
-
- wmv% = GetWindowsMinorVersion()
- IF wmv% = 0 THEN
- AddSectionKeyFileToCopyList "WINDEP", "FONTMAP30", SrcDir$, DEST$
- ELSE
- AddSectionKeyFileToCopyList "WINDEP", "FONTMAP31", SrcDir$, DEST$
- END IF
-
- IF GetListItem(CHECKOUT$, 1) = "ON" THEN
- CreateDir SampleDir$, cmoNone
- CreateDir TutorialDir$, cmoNone
- AddSectionFilesToCopyList "SAMPLES", SrcDir$, SampleDir$
- AddSectionFilesToCopyList "TUTORIAL", SrcDir$, TutorialDir$
- END IF
-
- IF GetListItem(CHECKOUT$, 2) = "ON" THEN
- AddSectionFilesToCopyList "HELP", SrcDir$, DEST$
- END IF
-
- IF GetListItem(CHECKOUT$, 3) = "ON" THEN
- AddSectionFilesToCopyList "WP", SrcDir$, ClarisDir$
- END IF
-
- IF GetListItem(CHECKOUT$, 4) = "ON" THEN
- AddSectionFilesToCopyList "EXCEL", SrcDir$, ClarisDir$
- END IF
-
- IF GetListItem(CHECKOUT$, 5) = "ON" THEN
- AddSectionFilesToCopyList "LOTUS", SrcDir$, ClarisDir$
- END IF
-
- IF GetListItem(CHECKOUT$, 6) = "ON" THEN
- AddSectionFilesToCopyList "DBF", SrcDir$, ClarisDir$
- END IF
-
- AddSectionFilesToCopyList "CORE", SrcDir$, ClarisDir$
- AddSectionFilesToCopyList "XTND", SrcDir$, ClarisDir$
- AddSpecialFileToCopyList "REDIST", "COMMDLG", SrcDir$, SysDir$+"COMMDLG.DLL"
- AddSpecialFileToCopyList "REDIST", "SHELL", SrcDir$, SysDir$+"SHELL.DLL"
- AddSpecialFileToCopyList "REDIST", "VER", SrcDir$, SysDir$+"VER.DLL"
- AddSpecialFileToCopyList "REDIST", "TOOLHELP", SrcDir$, SysDir$+"TOOLHELP.DLL"
- AddSpecialFileToCopyList "REDIST", "HELPEXE", SrcDir$, WindowsDir$+"WINHELP.EXE"
- AddSpecialFileToCopyList "REDIST", "HELPHLP", SrcDir$, WindowsDir$+"WINHELP.HLP"
- CopyFilesInCopyList
-
- IF ERR <> 0 THEN
- RETURN
- END IF
-
- '' Files are on disk at this point, any more errors are ignored
-
- AddDos5Help "CLWORKS", "An integrated application for word processing, graphics,"+chr$(10)+" spread sheet, and database.", cmoNone
-
- '' Add personalization stuff to CLWORKS.EXE
- PERS$ = CNAME$ + Chr$(0) + CORG$ + Chr$(0) + CSERNUM$ + Chr$(0)
- StampResource "APPLICATION","THEAPP",DEST$,10,15,PERS$,LEN(PERS$)
-
-
- ini$ = MakePath(WindowsDir$, "CLARIS.INI")
- CreateIniKeyValue ini$, "Claris", "Claris Directory", CDEST$, cmoOverwrite
- CreateIniKeyValue ini$, "ClarisWorks", "Offscreen", "0" , cmoNone
- CreateIniKeyValue ini$, "ClarisWorks", "MainDictionary", ClarisDir$ + "\" +"UKENG.NDX", cmoOverwrite
- CreateIniKeyValue ini$, "ClarisWorks", "UserDictionary", ClarisDir$ + "\" + "USERD.SPL", cmoOverwrite
- CreateIniKeyValue ini$, "ClarisWorks", "Thesaurus", ClarisDir$ + "\" + "KTHES.MTH", cmoOverwrite
- CreateIniKeyValue ini$, "ClarisWorks", "Terminal", "TERMINAL.EXE" , cmoNone
- CreateIniKeyValue ini$, "ClarisWorks", "MaxFonts", "22", cmoNone
- CreateIniKeyValue ini$, "ClarisWorks", "FontCount", "0", cmoNone
-
- ini$ = MakePath(WindowsDir$, "WIN.INI")
- CreateIniKeyValue ini$, "Extensions", "cwk", DEST$ + "\CLWORKS.EXE ^.CWK", cmoOverwrite
- CreateIniKeyValue ini$, "Extensions", "cws", DEST$ + "\CLWORKS.EXE ^.CWS" , cmoOverwrite
- CreateIniKeyValue ini$, "Extensions", "mac", DEST$ + "\CLWORKS.EXE ^.MAC" , cmoOverwrite
-
- progrp$ = MakePath(WindowsDir$, "CLWORKS.GRP")
- isthere% = DoesFileExist(progrp$, femExists)
- RemoveFile progrp$, cmoNone
- CreateProgmanGroup "ClarisWorks", progrp$, cmoNone
- ShowProgmanGroup "ClarisWorks", 1, cmoNone
- AppPath$ = MakePath(DEST$,"CLWORKS.EXE")
- CreateProgmanItem "ClarisWorks", "ClarisWorks", AppPath$, "", cmoOverwrite
- IF isthere% = 0 THEN
- CreateProgmanItem "ClarisWorks", "Read Me", AppPath$+" "+MakePath(DEST$,"readme.cwk"), AppPath$+",1", cmoOverwrite
- ENDIF
-
- ERR = 0
-
- END SUB
-
-
-
- '**
- '** Purpose:
- '** Appends a file name to the end of a directory path,
- '** inserting a backslash character as needed.
- '** Arguments:
- '** szDir$ - full directory path (with optional ending "\")
- '** szFile$ - filename to append to directory
- '** Returns:
- '** Resulting fully qualified path name.
- '*************************************************************************
- FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
- IF szDir$ = "" THEN
- MakePath = szFile$
- ELSEIF szFile$ = "" THEN
- MakePath = szDir$
- ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
- MakePath = szDir$ + szFile$
- ELSE
- MakePath = szDir$ + "\" + szFile$
- END IF
- END FUNCTION
-
-
-
- '**
- '** Purpose:
- '** Insert a \ after the drive if there is not one.
- '** Arguments:
- '** szName$ - full path name
- '** Returns:
- '** Resulting fully qualified path name.
- '*************************************************************************
- FUNCTION FixSlash (szName$) STATIC AS STRING
- IF MID$(szName$,3,1) = "\" THEN
- FixSlash = szName$
- ELSE
- FixSlash = MID$(szName$,1,2) + "\" + MID$(szName$,3,LEN(szName$))
- END IF
- END FUNCTION